Location-Based Services

ABSTRACT

Methods, systems, and apparatus, including computer program products, for location-based services. An event or device condition is detected at a device. A current geographic location of a device is determined. Location-based information based on the determined current geographic location is received. The location-based information includes information relevant to the event or device condition. The information is presented.

RELATED APPLICATIONS

This application claims the benefit under 35 U.S.C. §119 of U.S.Provisional Application No. 60/946,952, titled “Location-BasedServices,” filed Jun. 28, 2007, which is incorporated by referenceherein in its entirety.

BACKGROUND

This specification relates generally to mobile devices.

Conventional mobile devices are often dedicated to performing a specificapplication. For example, a mobile phone provides telephony services; apersonal digital assistant (PDA) provides a way to organize address,contacts and notes; a media player plays content; email devices provideemail communication, etc. Modern mobile devices can include two or moreof these applications. Typically, the two or more applications operateindependent of one another. For example, some mobile devices include adigital camera and access to various services available on the WorldWide Web (Web). Such devices, however, fail to integrate digital camerafunctions with network services to provide the user with an enricheduser experience.

SUMMARY

In general, one aspect of the subject matter described in thisspecification can be embodied in methods that include the actions ofdetecting a picture taking event on a device; determining a currentgeographic location of the device; receiving location-based informationbased on the determined current geographic location, the location-basedinformation including information corresponding to one or more relevantbusinesses in a vicinity of the determined current geographic locationand further including information corresponding to one or morebusinesses ancillary to the picture taking event; and presenting thelocation-based information. Other implementations can includecorresponding systems, apparatus, devices, and computer programproducts.

In general, another aspect of the subject matter described in thisspecification can be embodied in methods that include the actions ofdetecting an event or device condition at a device; determining acurrent geographic location of the device; receiving location-basedinformation based on the determined current geographic location, thelocation-based information including information relevant to the eventor device condition; and presenting the information. Otherimplementations can include corresponding systems, apparatus, devices,and computer program products.

In general, another aspect of the subject matter described in thisspecification can be embodied in methods that include the actions ofdetecting an event or device condition at a device; determining acurrent geographic location of the device; receiving location-basedinformation based on the determined current geographic location, thelocation-based information including information corresponding to one ormore relevant businesses in a vicinity of the determined currentgeographic location, a relevant business being related to the event ordevice condition; and presenting the information. Other implementationscan include corresponding systems, apparatus, devices, and computerprogram products.

Particular embodiments of the subject matter described in thisspecification can be implemented to realize one or more of the followingadvantages. Location information (e.g., local businesses) relevant to anevent, device condition, or activities associated with particular timesof the day is automatically retrieved and presented to a user of thedevice.

The details of one or more implementations of the subject matterdescribed in this specification are set forth in the accompanyingdrawings and the description below. Other features, aspects, andadvantages of the subject matter will become apparent from thedescription, the drawings, and the claims.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a block diagram of an example mobile device.

FIG. 2 is a block diagram of an example network operating environmentfor the mobile device of FIG. 1.

FIG. 3 is a block diagram of an example implementation of the mobiledevice of FIG. 1.

FIGS. 4A-4C are schematic representations of a map including push pins.

FIG. 5 is a flow diagram illustrating an example process for presentinglocation information related to an event on a device.

FIG. 6 is a flow diagram illustrating another example process forpresenting location information related to an event on a device.

Like reference numbers and designations in the various drawings indicatelike elements.

DETAILED DESCRIPTION

FIG. 1 is a block diagram of an example mobile device 100. The mobiledevice 100 can be, for example, a handheld computer, a personal digitalassistant, a cellular telephone, a network appliance, a camera, a smartphone, an enhanced general packet radio service (EGPRS) mobile phone, anetwork base station, a media player, a navigation device, an emaildevice, a game console, or other electronic device or a combination ofany two or more of these data processing devices or other dataprocessing devices.

Mobile Device Overview

In some implementations, the mobile device 100 includes atouch-sensitive display 102. The touch-sensitive display 102 canimplement liquid crystal display (LCD) technology, light emittingpolymer display (LPD) technology, or some other display technology. Thetouch-sensitive display 102 can be sensitive to haptic and/or tactilecontact with a user.

In some implementations, the touch-sensitive display 102 can comprise amulti-touch-sensitive display 102. A multi-touch-sensitive display 102can, for example, process multiple simultaneous touch points, includingprocessing data related to the pressure, degree and/or position of eachtouch point. Such processing facilitates gestures and interactions withmultiple fingers, chording, and other interactions. Othertouch-sensitive display technologies can also be used, e.g., a displayin which contact is made using a stylus or other pointing device. Anexample of a multi-touch-sensitive display technology is described inU.S. Pat. Nos. 6,323,846; 6,570,557; 6,677,932; and U.S. PatentPublication No. 2002/0015024A1, each of which is incorporated byreference herein in its entirety.

In some implementations, the mobile device 100 can display one or moregraphical user interfaces on the touch-sensitive display 102 forproviding the user access to various system objects and for conveyinginformation to the user. In some implementations, the graphical userinterface can include one or more display objects 104, 106. Each of thedisplay objects 104, 106 can be a graphic representation of a systemobject. Some examples of system objects include device functions,applications, windows, files, alerts, events, or other identifiablesystem objects.

Example Mobile Device Functionality

In some implementations, the mobile device 100 can implement multipledevice functionalities, such as a telephony device, as indicated by aphone object 110; an e-mail device, as indicated by the e-mail object112; a network data communication device, as indicated by the Web object114; a Wi-Fi base station device (not shown); and a media processingdevice, as indicated by the media player object 116. In someimplementations, particular device objects 104, e.g., the phone object110, the e-mail object 112, the Web object 114, and the media playerobject 116, can be displayed in a menu bar 118. In some implementations,each of the device functionalities can be accessed from a top-levelgraphical user interface, such as the graphical user interfaceillustrated in FIG. 1. Touching one of the objects 110, 112, 114 or 116can, for example, invoke the corresponding functionality.

In some implementations, the mobile device 100 can implement networkdistribution functionality. For example, the functionality can enablethe user to take the mobile device 100 and its associated network whiletraveling. In particular, the mobile device 100 can extend Internetaccess (e.g., via Wi-Fi) to other wireless devices in the vicinity. Forexample, mobile device 100 can be configured as a base station for oneor more devices. As such, mobile device 100 can grant or deny networkaccess to other wireless devices.

In some implementations, upon invocation of particular devicefunctionality, the graphical user interface of the mobile device 100changes, or is augmented or replaced with another user interface or userinterface elements, to facilitate user access to particular functionsassociated with the corresponding device functionality. For example, inresponse to a user touching the phone object 110, the graphical userinterface of the touch-sensitive display 102 may present display objectsrelated to various phone functions; likewise, touching of the emailobject 112 may cause the graphical user interface to present displayobjects related to various e-mail functions; touching the Web object 114may cause the graphical user interface to present display objectsrelated to various Web-surfing functions; and touching the media playerobject 116 may cause the graphical user interface to present displayobjects related to various media processing functions.

In some implementations, the top-level graphical user interfaceenvironment or state of FIG. 1 can be restored by pressing a button 120located near the bottom of the mobile device 100. In someimplementations, each corresponding device functionality may havecorresponding “home” display objects displayed on the touch-sensitivedisplay 102, and the graphical user interface environment of FIG. 1 canbe restored by pressing the “home” display object.

In some implementations, the top-level graphical user interface caninclude additional display objects 106, such as a short messagingservice (SMS) object 130, a calendar object 132, a photos object 134, acamera object 136, a calculator object 138, a stocks object 140, aweather object 142, a maps object 144, a notes object 146, a clockobject 148, an address book object 150, and a settings object 152.Touching the SMS display object 130 can, for example, invoke an SMSmessaging environment and supporting functionality. Likewise, eachselection of a display object 132, 134, 136, 138, 140, 142, 144, 146,148, 150 and 152 can invoke a corresponding object environment andfunctionality.

Additional and/or different display objects can also be displayed in thegraphical user interface of FIG. 1. For example, if the device 100 isfunctioning as a base station for other devices, one or more“connection” objects may appear in the graphical user interface toindicate the connection. In some implementations, the display objects106 can be configured by a user, e.g., a user may specify which displayobjects 106 are displayed, and/or may download additional applicationsor other software that provides other functionalities and correspondingdisplay objects.

In some implementations, the mobile device 100 can include one or moreinput/output (I/O) devices and/or sensor devices. For example, a speaker160 and a microphone 162 can be included to facilitate voice-enabledfunctionalities, such as phone and voice mail functions. In someimplementations, a loud speaker 164 can be included to facilitatehands-free voice functionalities, such as speaker phone functions. Anaudio jack 166 can also be included for use of headphones and/or amicrophone.

In some implementations, a proximity sensor 168 can be included tofacilitate the detection of the user positioning the mobile device 100proximate to the user's ear and, in response, to disengage thetouch-sensitive display 102 to prevent accidental function invocations.In some implementations, the touch-sensitive display 102 can be turnedoff to conserve additional power when the mobile device 100 is proximateto the user's ear.

Other sensors can also be used. For example, in some implementations, anambient light sensor 170 can be utilized to facilitate adjusting thebrightness of the touch-sensitive display 102. In some implementations,an accelerometer 172 can be utilized to detect movement of the mobiledevice 100, as indicated by the directional arrow 174. Accordingly,display objects and/or media can be presented according to a detectedorientation, e.g., portrait or landscape. In some implementations, themobile device 100 may include circuitry and sensors for supporting alocation determining capability, such as that provided by the globalpositioning system (GPS) or other positioning system (e.g., systemsusing Wi-Fi access points, television signals, cellular grids, UniformResource Locators (URLs)). In some implementations, a positioning system(e.g., a GPS receiver) can be integrated into the mobile device 100 orprovided as a separate device that can be coupled to the mobile device100 through an interface (e.g., port device 190) to provide access tolocation-based services.

The mobile device 100 can also include a camera lens and sensor 180. Insome implementations, the camera lens and sensor 180 can be located onthe back surface of the mobile device 100. The camera can capture stillimages and/or video.

The mobile device 100 can also include one or more wirelesscommunication subsystems, such as a 802.11b/g communication device 186,and/or a Bluetooth™ communication device 188. Other communicationprotocols can also be supported, including other 802.x communicationprotocols (e.g., WiMax, Wi-Fi), code division multiple access (CDMA),global system for mobile communications (GSM), Enhanced Data GSMEnvironment (EDGE), 3G (e.g., EV-DO, UMTS, HSDPA), etc.

In some implementations, a port device 190, e.g., a Universal Serial Bus(USB) port, or a docking port, or some other wired port connection, canbe included. The port device 190 can, for example, be utilized toestablish a wired connection to other computing devices, such as othercommunication devices 100, a personal computer, a printer, or otherprocessing devices capable of receiving and/or transmitting data. Insome implementations, the port device 190 allows the mobile device 100to synchronize with a host device using one or more protocols.

Network Operating Environment

FIG. 2 is a block diagram of an example network operating environment200 for the mobile device 100 of FIG. 1. The mobile device 100 of FIG. 1can, for example, communicate over one or more wired and/or wirelessnetworks 210 in data communication. For example, a wireless network 212,e.g., a cellular network, can communicate with a wide area network (WAN)214, such as the Internet, by use of a gateway 216. Likewise, an accesspoint 218, such as an 802.11g wireless access point, can providecommunication access to the wide area network 214. In someimplementations, both voice and data communications can be establishedover the wireless network 212 and the access point 218. For example, themobile device 100 a can place and receive phone calls (e.g., using VoIPprotocols), send and receive e-mail messages (e.g., using POP3protocol), and retrieve electronic documents and/or streams, such as webpages, photographs, and videos, over the wireless network 212, gateway216, and wide area network 214 (e.g., using TCP/IP or UDP protocols).Likewise, the mobile device 100 b can place and receive phone calls,send and receive e-mail messages, and retrieve electronic documents overthe access point 218 and the wide area network 214. In someimplementations, the mobile device 100 can be physically connected tothe access point 218 using one or more cables and the access point 218can be a personal computer. In this configuration, the mobile device 100can be referred to as a “tethered” device.

The mobile devices 100 a and 100 b can also establish communications byother means. For example, the wireless device 100 a can communicate withother wireless devices, e.g., other wireless devices 100, cell phones,etc., over the wireless network 212. Likewise, the mobile devices 100 aand 100 b can establish peer-to-peer communications 220, e.g., apersonal area network, by use of one or more communication subsystems,such as the Bluetooth™ communication device 188 shown in FIG. 1. Othercommunication protocols and topologies can also be implemented.

The mobile device 100 can, for example, communicate with one or moreservices 230, 240, 250, 255, and 260 and/or one or more contentpublishers 270 over the one or more wired and/or wireless networks 210.For example, a navigation service 230 can provide navigationinformation, e.g., map information, location information, routeinformation, and other information, to the mobile device 100. In theexample shown, a user of the mobile device 100 b has invoked a mapfunctionality, e.g., by touching the maps object 144 on the top-levelgraphical user interface shown in FIG. 1, and has requested and receiveda map for the location “1 Infinite Loop, Cupertino, Calif.”

A messaging service 240 can, for example, provide e-mail and/or othermessaging services. A media service 250 can, for example, provide accessto media files, such as song files, movie files, video clips, and othermedia data. A location-based service 255 can, for example, provide dataor content based on a current location of the mobile device 100. One ormore other services 260 can also be utilized by the mobile device 100,including a syncing service, an activation service and a software updateservice that automatically determines whether software updates areavailable for software on the mobile device 100, then downloads thesoftware updates to the mobile device 100 where the updates can bemanually or automatically unpacked and/or installed.

The mobile device 100 can also access other data over the one or morewired and/or wireless networks 210. For example, content publishers 270,such as news sites, RSS feeds, web sites, blogs, social networkingsites, developer networks, etc., can be accessed by the mobile device100. Such access can be provided by invocation of a web browsingfunction or application (e.g., a browser) in response to a user touchingthe Web object 114.

Example Device Architecture

FIG. 3 is a block diagram 300 of an example implementation of the mobiledevice 100 of FIG. 1. The mobile device 100 can include a memoryinterface 302 one or more data processors, image processors and/orcentral processing units 304, and a peripherals interface 306. Thememory interface 302, the one or more processors 304 and/or theperipherals interface 306 can be separate components or can beintegrated in one or more integrated circuits. The various components inthe mobile device 100 can be coupled by one or more communication busesor signal lines.

Sensors, devices and subsystems can be coupled to the peripheralsinterface 306 to facilitate multiple functionalities. For example, amotion sensor 310, a light sensor 312, and a proximity sensor 314 can becoupled to the peripherals interface 306 to facilitate the orientation,lighting and proximity functions described with respect to FIG. 1. Othersensors 316 can also be connected to the peripherals interface 306, suchas a GPS receiver, a temperature sensor, a biometric sensor, or othersensing device, to facilitate related functionalities.

A camera subsystem 320 and an optical sensor 322, e.g., a chargedcoupled device (CCD) or a complementary metal-oxide semiconductor (CMOS)optical sensor, can be utilized to facilitate camera functions, such asrecording photographs and video clips.

Communication functions can be facilitated through one or more wirelesscommunication subsystems 324, which can include radio frequencyreceivers and transmitters and/or optical (e.g., infrared) receivers andtransmitters. The specific design and implementation of thecommunication subsystem 324 can depend on the communication network(s)over which the mobile device 100 is intended to operate. For example, amobile device 100 may include communication subsystems 324 designed tooperate over a GSM network, a GPRS network, an EDGE network, a 3Gnetwork, a Wi-Fi or WiMax network, and a Bluetooth™ network. Inparticular, the wireless communication subsystems 324 may includehosting protocols such that the device 100 may be configured as a basestation for other wireless devices.

An audio subsystem 326 can be coupled to a speaker 328 and a microphone330 to facilitate voice-enabled functions, such as voice recognition,voice replication, digital recording, and telephony functions.

The I/O subsystem 340 can include a touch screen controller 342 and/orother input controller(s) 344. The touch-screen controller 342 can becoupled to a touch screen 346. The touch screen 346 and touch screencontroller 342 can, for example, detect contact and movement or breakthereof using any of a plurality of touch sensitivity technologies,including but not limited to capacitive, resistive, infrared, andsurface acoustic wave technologies, as well as other proximity sensorarrays or other elements for determining one or more points of contactwith the touch screen 346.

The other input controller(s) 344 can be coupled to other input/controldevices 348, such as one or more buttons, rocker switches, thumb-wheel,infrared port, USB port, and/or a pointer device such as a stylus. Theone or more buttons (not shown) can include an up/down button for volumecontrol of the speaker 328 and/or the microphone 330.

In one implementation, a pressing of the button for a first duration maydisengage a lock of the touch screen 346; and a pressing of the buttonfor a second duration that is longer than the first duration may turnpower to the mobile device 100 on or off. The user may be able tocustomize a functionality of one or more of the buttons. The touchscreen 346 can, for example, also be used to implement virtual or softbuttons and/or a keyboard.

In some implementations, the mobile device 100 can present recordedaudio and/or video files, such as MP3, AAC, and MPEG files. In someimplementations, the mobile device 100 can include the functionality ofan MP3 player, such as an iPod™. The mobile device 100 may, therefore,include a 36-pin connector that is compatible with the iPod. Otherinput/output and control devices can also be used.

The memory interface 302 can be coupled to memory 350. The memory 350can include high-speed random access memory and/or non-volatile memory,such as one or more magnetic disk storage devices, one or more opticalstorage devices, and/or flash memory (e.g., NAND, NOR). The memory 350can store an operating system 352, such as Darwin, RTXC, LINUX, UNIX, OSX, WINDOWS, or an embedded operating system such as VxWorks. Theoperating system 352 may include instructions for handling basic systemservices and for performing hardware dependent tasks. In someimplementations, the operating system 352 handles timekeeping tasks,including maintaining the date and time (e.g., a clock) on the mobiledevice 100. In some implementations, the operating system 352 can be akernel (e.g., UNIX kernel).

The memory 350 may also store communication instructions 354 tofacilitate communicating with one or more additional devices, one ormore computers and/or one or more servers. The memory 350 may includegraphical user interface instructions 356 to facilitate graphic userinterface processing; sensor processing instructions 358 to facilitatesensor-related processing and functions; phone instructions 360 tofacilitate phone-related processes and functions; electronic messaginginstructions 362 to facilitate electronic-messaging related processesand functions; web browsing instructions 364 to facilitate webbrowsing-related processes and functions; media processing instructions366 to facilitate media processing-related processes and functions;GPS/Navigation instructions 368 to facilitate GPS and navigation-relatedprocesses and instructions; camera instructions 370 to facilitatecamera-related processes and functions; other software instructions 372to facilitate other related processes and functions; and/or diagnosticinstructions 374 to facilitate diagnostic processes and functions.

The memory 350 can also store data, including but not limited todocuments, images, video files, audio files, and other data.

In some implementations, the mobile device 100 includes a positioningsystem 318. In various implementations, the positioning system 318 canbe provided by a separate device coupled to the mobile device 100, orcan be provided internal to the mobile device. In some implementations,the positioning system 318 can employ positioning technology including aGPS, a cellular grid, URIs or any other technology for determining thegeographic location of a device. In some implementations, thepositioning system 318 can employ a service provided by a positioningservice such as, for example, SkyHook Wireless of Boston, Mass., orRosum Corporation of Mountain View, Calif. In other implementations, thepositioning system 318 can be provided by an accelerometer and a compassusing dead reckoning techniques. In such implementations, the user canoccasionally reset the positioning system by marking the mobile device'spresence at a known location (e.g., a landmark or intersection). Instill other implementations, the user can enter a set of positioncoordinates (e.g., latitude, longitude) for the mobile device. Forexample, the position coordinates can be typed into the phone (e.g.,using a virtual keyboard) or selected by touching a point on a map.Position coordinates can also be acquired from another device (e.g., acar navigation system) by syncing or linking with the other device. Inother implementations, the positioning system 318 can be provided byusing wireless signal strength and one or more locations of knownwireless signal sources to provide the current location. Wireless signalsources can include access points and/or cellular towers. Othertechniques to determine a current location of the mobile device 100 canbe used and other configurations of the positioning system 318 arepossible.

Each of the above identified instructions and applications cancorrespond to a set of instructions for performing one or more functionsdescribed above. These instructions need not be implemented as separatesoftware programs, procedures or modules. The memory 350 can includeadditional instructions or fewer instructions. Furthermore, variousfunctions of the mobile device 100 may be implemented in hardware and/orin software, including in one or more signal processing and/orapplication specific integrated circuits.

FIGS. 4A-4B illustrate maps including location markers (e.g., pushpins). In this example, a current location of the mobile device 100 (andpossibly the user) is represented on a map 400 at reference numeral 402.In this implementation, as the mobile device 100 moves, the previouslocations of the mobile device 100 persist on the map 400 and arerepresented by the line 404 showing the route traveled by the mobiledevice 100 since the map feature was activated by the user. In someother implementations, the previous locations of the mobile device canbe omitted from the map 400, and current location 402 is represented onthe map 400 by a graphical object (e.g., a push pin, an icon thatresembles the device 100 or a human, etc.).

Graphical objects 406, 408 are displayed on the map representing thelocations of businesses (or other items of interest) in the vicinity ofthe current location of the mobile device 100. In this implementation,the graphical objects 406, 408 appear as push pins that are “pinned” tothe map at their corresponding locations. In this example, both pushpins 406 and 408 are located along the route 404 traveled by the user.In some implementations, the user can define a setting within the mobiledevice 100 for the map feature to specify a proximity condition thatmust be satisfied by a business before a push pin is shown on the maprepresenting the business. For example, the proximity condition canrequire that the business' location be on the route traveled by themobile device 100 in order to be displayed on the map 400 as a push pin.In another example, the proximity condition can require that thebusiness' location be within a certain radius of the current location ofthe mobile device 100 in order to be displayed on the map 400. In yetanother example, the proximity condition can require only that thecontact's location be within the geographic parameters of the mapdisplayed to the user in order to be displayed on the map 400. In suchan example, if the user selects to “zoom out” the map to display alarger geographical area, then multiple other push pins may appearcorresponding to locations within the larger geographical area.

The map 400 and the businesses represented by graphical objects 406, 408can be displayed to the user in response to particular events occurringat the mobile device 100 or a clock on the mobile device reaching aparticular time. Triggering events can include activation ordeactivation of particular features or functions on the device 100(e.g., activation of an image capture by the camera subsystem 320,detection of a malfunction of the device 100, a clock on the device 100reaching a time associated with a particular activity, etc.). Further,the types of businesses that are displayed can be based on thetriggering event or condition. For example, businesses offering photoprocessing services or other camera related services are displayed ifthe triggering event is the capture of an image on the camera of thedevice 100. As another example, restaurants can be displayed if thetriggering event is a clock of the device 100 reaching a time associatedwith a meal (e.g., noon for lunch). In some implementations, businessesof different types can be displayed on the same map. For example, themap 400 can display businesses offering photo processing services (e.g.,push pin 406 in FIGS. 4B-4C) and restaurants (e.g., push pin 408 inFIGS. 4B-4C) on the same map. Further details are described below inrelation to FIGS. 5-6.

Referring now to FIG. 4B, the map 400 displays information 410corresponding to a photo processing business represented by graphicalobject 406. In some implementations, the information 410 is displayed inresponse to a user selection of the graphical object 406 on the map 400.For example, in one implementation where the mobile device 100 includesa touch sensitive display (e.g., touch sensitive display 102 shown inFIG. 1), the user can touch the push pin 406 to display informationassociated with the business represented by the push pin 406. Similarly,as shown in FIG. 4C, the map 400 displays information 412 correspondingto a restaurant represented by graphical object 408. Information 412 canbe displayed in response to a user selection of the graphical object 408on the map 400.

In some implementations, the displayed information 410, 412 includes,respectively, the name of a business, the address of the business, and aphone number and/or an email address of the business. Further, in someimplementations, depending on the type of business represented by thegraphical object, the information 410 or 412 can include a hyperlinkthat facilitates transactions with the business associated with theinformation 410 or 412. For example, if the business is a photoprocessing business, the hyperlink may be a link to order prints forpickup from the photo processing business. As another example, thehyperlink can also be associated with a phone number of the business,which when selected causes the telephone number to be automaticallydialed. As a further example, the hyperlink can be associated with acoupon associated with the business or other information associated withthe business. Selecting the hyperlink triggers a presentation of thecoupon or other information. In some implementations, selecting thehyperlink triggers a sending of the coupon or other information (e.g.,an advertisement) associated with the business to, for example, an emailaddress of the user of the device.

FIG. 5 illustrates a process 500 for presenting location informationrelated to an event or a condition on a device. For convenience, theprocess 500 will be described in reference to a device (e.g., mobiledevice 100) that performs the process 500.

An event or a condition on the device is detected (502). In someimplementations, the device 100 can be configured to detect and/orperform operations in response to the occurrence of particular events onthe device or the satisfaction of particular conditions on the device.

In some implementations, the detected event is a capture of an image bythe camera subsystem 320. For example, when a user of the device 100takes a picture using the camera subsystem 320 and camera instructions370, the device 100 detects the taking of the picture and can performoperations, further described below, in response to the taking of thepicture. In some implementations, the operations are triggered when atleast multiple pictures are taken using the camera subsystem 320 withina time period (e.g., at least two pictures taken within an hour of eachother). In some other implementations, other user actions on the device100 can also be the triggering event.

In some implementations, the detected event is a malfunction of acomponent or feature of the device 100 or some other problem related toa component of the mobile device 100. For example, the diagnosticinstructions 374 can perform a diagnostic test of the device 100automatically or in response to a user request. Identification of amalfunction of a component or feature of the device 100 triggers furtheroperations as described below. As another example, if the user cannottake a picture because there is no memory available for the camera, thenthe shortage of memory can be a detected event which could initiate thedisplay of a nearby business selling electronics or camera supplieswhere the user can purchase additional memory (e.g., a compact flashcard).

In some implementations, the detected satisfaction of a condition is thearrival of a time of day that is associated with a particular activity.For example, when the clock arrives at a time associated with a meal(e.g., 12 noon for lunch, 7 PM for dinner), further operations asdescribed below are triggered.

A current geographic location of the device is determined (504). Inresponse to an event or satisfaction of a condition, the mobile device100 determines its current geographic location. In some implementations,the device 100 determines its current location using GPS or any otherpositioning system. In some implementations, the current location, asdetermined using GPS, can be expressed in latitude/longitude. In someimplementations, the device 100 can, optionally, convert thelatitude/longitude of the current location to an address (e.g., street,city, country) by referencing a database of latitudes/longitudes andlocations that is stored in the memory 350, for example.

In some other implementations, the device 100 can obtain its geographicposition by other means. For example, a device 100 can obtain itsposition using cellular phone tower triangulation, Wi-Fi positioning, acombination of GPS and other signals, differential GPS, and any othersuitable technologies and techniques.

Location information related to the event or condition can be receivedbased on the determined current geographic location (506). The mobiledevice 100 can request, from a navigation service 230 or location-basedservice 255, for example, a map of the vicinity of the determinedcurrent location, where the map includes locations of businesses thatare in the vicinity of the determined current geographic location andare related to the event or condition.

In some implementations, the device 100 sends a request to thenavigation service 230 or location service 255 for a map of the area andrelevant businesses in the area. For example, if the event was a takingof one or more pictures by a user using a camera of the mobile device100, the device 100 can request for, and receive a map of the vicinityof the current geographic location of the device (e.g., map 400) andlocation information for businesses providing photo processing servicesin the vicinity, marked on the map by graphical objects (e.g., push pins406, 408). If the event or condition was a malfunction of the device100, the device 100 can make a request for, and receive a map of thevicinity of the current geographic location of the device (e.g., map400) and location information for authorized service/repair providersfor the device 100 in the vicinity, marked on the map by graphicalobjects (e.g., push pins 406, 408). If the event or condition was thearrival of a time of day associated with a meal (e.g., 12 Noon forlunch), the device 100 can request for, and receive a map of thevicinity of the current geographic location of the device (e.g., map400) and location information for restaurants in the vicinity, marked onthe map by graphical objects (e.g., push pins 406, 408).

In some implementations, the user can configure the device 100 torequest location information related the current geographic locationbased on a history of locations to which the device 100 has been locatedbefore. That is, the detected condition is that the current geographiclocation matches a location in the location history. In an exampleimplementation, the device 100 can store a history of locations that thedevice 100 (and presumably the user) has been to before (e.g.,particular landmarks). The device 100 can also store information relatedto one or more services or businesses, near a previously-visitedlocation, that had been displayed when the device 100 had previouslyvisited that location. If the current geographic location matches apreviously-visited location in the location history, the device 100 canmake a request for, and receive a map of the vicinity of the currentgeographic location and location information corresponding to servicesor businesses, near the location, that were previously displayed forthat location.

In some implementations, the user can configure the device 100 torequest location information for particular times of the day that areassociated with particular activities. For example, the user can specifythat 4 PM is associated with afternoon tea and that the device 100should request location information related to coffee or tea shops whenthe time on the device 100 is 4 PM.

The location information is presented (508). The received locationinformation, which includes the map and graphical objects correspondingto relevant businesses in the vicinity, are presented to the user (e.g.,by displaying the information on the touch screen 346). The user canmanipulate the map and select any of the graphical objects to requestfurther information. For example, if the user selects a graphical object406 on the map 400, information 410 corresponding to the businessrepresented by the graphical object 406 is displayed.

FIG. 6 illustrates an example process 600 for presenting locationinformation related to a picture taking event on a device. Forconvenience, the process 600 will be described in reference to a deviceor system (e.g., mobile device 100) that performs the process 600.

A picture taking event on the device is detected (602). For example, auser of the mobile device 100 can take a picture or capture an imageusing a camera (e.g., camera subsystem 320) of the device. The taking ofthe picture or the image capture is detected by the mobile device 100.

A current geographic location of the device is determined (604). Inresponse to the picture taking event, the mobile device 100 determinesits current geographic location. In some implementations, the device 100determines its current location using GPS or any other positioningsystem. In some implementations, the current location, as determinedusing GPS, can be expressed in latitude/longitude. In someimplementations, the device 100 can, optionally, convert thelatitude/longitude of the current location to an address (e.g., street,city, country) by referencing a database of latitudes/longitudes andlocations that is stored in the memory 350, for example.

In some other implementations, the device 100 can obtain its geographicposition by other means. For example, a device 100 can obtain itsposition using cellular phone tower triangulation, Wi-Fi positioning, acombination of GPS and other signals, differential GPS, and any othersuitable technologies and techniques.

In some implementations, a current time and/or date is determined. Forexample, the device 100 can read the time and date as maintained by thedevice 100. The determined time and date serves as a time and date ofthe picture taking event.

Locations of one or more relevant businesses in the vicinity of thedetermined current location is determined (606). In someimplementations, the device 100 sends a request for location-basedinformation to a service (e.g., location-based service 255, navigationservice 230). In some implementations, the request for location-basedinformation is a request for information associated with businesses, inthe vicinity of the determined current geographic location, that providephoto or image printing/processing services. The service receiving therequest determines, from a database of businesses, for example, thelocations of photo processing businesses that are in proximity of thedetermined geographic location of the device 100 and retrievesinformation related to these businesses, such as their names, addresses,and phone numbers.

The businesses are optionally filtered (608). In some implementations,the photo printing businesses determined in accordance with block 606can be filtered based on various criteria. In an exemplaryimplementation, the businesses can be filtered by the navigation orlocation-based service based on the current time and date or the time ofthe event determined in accordance with block 604. For example, thebusinesses information can include hours of operation of the businesses,and businesses whose hours of operation do not overlap with the currenttime and date can be disregarded (e.g., a photo processing business thatis closed on Sunday or after 5 PM is disregarded when the date is aSunday or the time is 6 PM, respectively). As another example, thebusinesses can be filtered based on user preferences, such aspreferences regarding price. A business can be disregard if its perprint price is over the user's per print price preference, for example.

In some implementations, the user preferences are set by the user at thedevice 100 and stored at the device 100. The user preferences are sentto the navigation or location-based service along with the request forbusinesses. In some other implementations, the user preferences arestored at the navigation or location-based service.

Ancillary information related to the picture taking event, the currentgeographic location, and/or the time is determined (610). In someimplementations, the ancillary information can include other types ofbusinesses beyond photo printing businesses. These other types ofbusinesses can include businesses that the user of the device canpatronize while waiting for photos to be processed by a photo printingbusiness, such as restaurants, post offices, pharmacies, banks, movietheatres, and so forth. The user preferences can specify which types ofancillary businesses to determine in addition to the photo processingbusinesses. In some implementations, the locations of ancillarybusinesses can be determined at the same time as the determination ofthe locations of the photo processing businesses in accordance withblock 606.

As an example, if the picture taking event occurred at around 12 noon,the navigation or location-based service can determine locations of oneor more photo processing businesses near the current location of thedevice. Additionally, because 12 noon is associated with lunch time, thenavigation or location-based service can determine locations of one ormore restaurants near the current location of the device.

Similar to the filtering of photo processing businesses in accordancewith block 608, the ancillary businesses can also be filtered by thenavigation or location-based service based on hours of operation, price,etc.

A map with the current location and the determined locations of thebusinesses remaining after the filtering is generated (612). The map(e.g., map 400) is generated by the navigation or location-basedservice. The map is delivered to the device for display on the device(614). The generated map, including the business locations and theinformation related to the businesses, is transmitted to the device 100by the service and is displayed on the touch screen 346.

In some implementations, the filtering described in reference to blocks608 and 610 can be done at the device 100 instead of the navigation orlocation-based service. The navigation or location-based service sendsthe map and all of the determined business locations and the device 100filters the businesses based on user preferences. The map is displayedat the device 100 with only the business locations that passed thefilter.

The disclosed and other embodiments and the functional operationsdescribed in this specification can be implemented in digital electroniccircuitry, or in computer software, firmware, or hardware, including thestructures disclosed in this specification and their structuralequivalents, or in combinations of one or more of them. The disclosedand other embodiments can be implemented as one or more computer programproducts, i.e., one or more modules of computer program instructionsencoded on a computer-readable medium for execution by, or to controlthe operation of, data processing apparatus. The computer-readablemedium can be a machine-readable storage device, a machine-readablestorage substrate, a memory device, a composition of matter effecting amachine-readable propagated signal, or a combination of one or morethem. The term “data processing apparatus” encompasses all apparatus,devices, and machines for processing data, including by way of example aprogrammable processor, a computer, or multiple processors or computers.The apparatus can include, in addition to hardware, code that creates anexecution environment for the computer program in question, e.g., codethat constitutes processor firmware, a protocol stack, a databasemanagement system, an operating system, or a combination of one or moreof them. A propagated signal is an artificially generated signal, e.g.,a machine-generated electrical, optical, or electromagnetic signal, thatis generated to encode information for transmission to suitable receiverapparatus.

A computer program (also known as a program, software, softwareapplication, script, or code) can be written in any form of programminglanguage, including compiled or interpreted languages, and it can bedeployed in any form, including as a stand-alone program or as a module,component, subroutine, or other unit suitable for use in a computingenvironment. A computer program does not necessarily correspond to afile in a file system. A program can be stored in a portion of a filethat holds other programs or data (e.g., one or more scripts stored in amarkup language document), in a single file dedicated to the program inquestion, or in multiple coordinated files (e.g., files that store oneor more modules, sub-programs, or portions of code). A computer programcan be deployed to be executed on one computer or on multiple computersthat are located at one site or distributed across multiple sites andinterconnected by a communication network.

The processes and logic flows described in this specification can beperformed by one or more programmable processors executing one or morecomputer programs to perform functions by operating on input data andgenerating output. The processes and logic flows can also be performedby, and apparatus can also be implemented as, special purpose logiccircuitry, e.g., an FPGA (field programmable gate array) or an ASIC(application-specific integrated circuit).

Processors suitable for the execution of a computer program include, byway of example, both general and special purpose microprocessors, andany one or more processors of any kind of digital computer. Generally, aprocessor will receive instructions and data from a read-only memory ora random access memory or both. The essential elements of a computer area processor for performing instructions and one or more memory devicesfor storing instructions and data. Generally, a computer will alsoinclude, or be operatively coupled to receive data from or transfer datato, or both, one or more mass storage devices for storing data, e.g.,magnetic, magneto-optical disks, or optical disks. However, a computerneed not have such devices. Computer-readable media suitable for storingcomputer program instructions and data include all forms of non-volatilememory, media and memory devices, including by way of examplesemiconductor memory devices, e.g., EPROM, EEPROM, and flash memorydevices; magnetic disks, e.g., internal hard disks or removable disks;magneto-optical disks; and CD-ROM and DVD-ROM disks. The processor andthe memory can be supplemented by, or incorporated in, special purposelogic circuitry.

To provide for interaction with a user, the disclosed embodiments can beimplemented on a computer having a display device, e.g., a CRT (cathoderay tube) or LCD (liquid crystal display) monitor, for displayinginformation to the user and a keyboard and a pointing device, e.g., amouse or a trackball, by which the user can provide input to thecomputer. Other kinds of devices can be used to provide for interactionwith a user as well; for example, feedback provided to the user can beany form of sensory feedback, e.g., visual feedback, auditory feedback,or tactile feedback; and input from the user can be received in anyform, including acoustic, speech, or tactile input.

The disclosed embodiments can be implemented in a computing system thatincludes a back-end component, e.g., as a data server, or that includesa middleware component, e.g., an application server, or that includes afront-end component, e.g., a client computer having a graphical userinterface or a Web browser through which a user can interact with animplementation of what is disclosed here, or any combination of one ormore such back-end, middleware, or front-end components. The componentsof the system can be interconnected by any form or medium of digitaldata communication, e.g., a communication network. Examples ofcommunication networks include a local area network (“LAN”) and a widearea network (“WAN”), e.g., the Internet.

The computing system can include clients and servers. A client andserver are generally remote from each other and typically interactthrough a communication network. The relationship of client and serverarises by virtue of computer programs running on the respectivecomputers and having a client-server relationship to each other.

While this specification contains many specifics, these should not beconstrued as limitations on the scope of what being claims or of whatmay be claimed, but rather as descriptions of features specific toparticular embodiments. Certain features that are described in thisspecification in the context of separate embodiments can also beimplemented in combination in a single embodiment. Conversely, variousfeatures that are described in the context of a single embodiment canalso be implemented in multiple embodiments separately or in anysuitable subcombination. Moreover, although features may be describedabove as acting in certain combinations and even initially claimed assuch, one or more features from a claimed combination can in some casesbe excised from the combination, and the claimed combination may bedirected to a subcombination or variation of a subcombination.

Similarly, while operations are depicted in the drawings in a particularorder, this should not be understand as requiring that such operationsbe performed in the particular order shown or in sequential order, orthat all illustrated operations be performed, to achieve desirableresults. In certain circumstances, multitasking and parallel processingmay be advantageous. Moreover, the separation of various systemcomponents in the embodiments described above should not be understoodas requiring such separation in all embodiments, and it should beunderstood that the described program components and systems cangenerally be integrated together in a single software product orpackaged into multiple software products.

Thus, particular embodiments have been described. Other embodiments arewithin the scope of the following claims.

1. A method comprising: detecting a picture taking event on a device;determining a current geographic location of the device; receivinglocation-based information based on the determined current geographiclocation, the location-based information comprising informationcorresponding to one or more relevant businesses in a vicinity of thedetermined current geographic location, the location-based informationfurther comprising information corresponding to one or more businessesancillary to the picture taking event; and presenting the location-basedinformation.
 2. The method of claim 1, wherein presenting thelocation-based information comprises presenting the location-basedinformation on a map, the map comprising an indication of the determinedcurrent geographic location and indications of the relevant businessesand the ancillary businesses.
 3. The method of claim 1, whereindetermining a current geographic location of the device comprisesdetermining the current geographic location using GPS.
 4. The method ofclaim 1, further comprising, before the presenting, filtering thelocation-based information based on one or more criteria; and whereinpresenting the location-based information comprises presenting thefiltered location-based information.
 5. The method of claim 4, whereinthe criteria includes at least one of the group consisting of: thecurrent time, the current date, and one or more user preferences.
 6. Themethod of claim 4, wherein the criteria comprises the current time, andfiltering the location-based information comprises: filtering one ormore of the relevant businesses and ancillary businesses whoserespective hours of operation do not overlap with the current time.
 7. Aportable electronic device, comprising: one or more processors; and acomputer-readable medium storing instructions for execution by the oneor more processors, the instructions comprising instructions to: detecta picture taking event on the device; determine a current geographiclocation of the device; receive location-based information based on thedetermined current geographic location, the location-based informationcomprising information corresponding to one or more relevant businessesin a vicinity of the determined current geographic location, thelocation-based information further comprising information correspondingto one or more businesses ancillary to the picture taking event; andpresent the location-based information.
 8. A computer program product,encoded on a tangible program carrier, operable to cause a portabledevice to perform operations comprising: detecting a picture takingevent on the device; determining a current geographic location of thedevice; receiving location-based information based on the determinedcurrent geographic location, the location-based information comprisinginformation corresponding to one or more relevant businesses in avicinity of the determined current geographic location, thelocation-based information further comprising information correspondingto one or more businesses ancillary to the picture taking event; andpresenting the location-based information.
 9. A method comprising: at adevice, detecting an event or device condition; determining a currentgeographic location of the device; receiving location-based informationbased on the determined current geographic location, the location-basedinformation comprising information corresponding to one or more relevantbusinesses in a vicinity of the determined current geographic location,a relevant business being related to the event or device condition; andpresenting the information.
 10. The method of claim 9, wherein thelocation-based information further comprises information correspondingto one or more ancillary business in a vicinity of the determinedcurrent geographic location, an ancillary business being ancillary tothe even or device condition.
 11. A method comprising: at a device,detecting an event or device condition; determining a current geographiclocation of the device; receiving location-based information based onthe determined current geographic location, the location-basedinformation comprising information relevant to the event or devicecondition and information ancillary to the event or device condition;and presenting the information.
 12. The method of claim 11, wherein theinformation relevant to the event or device condition comprisesinformation corresponding to one or more businesses or services relevantto the event or device condition.
 13. The method of claim 11, whereinthe information ancillary to the event or device condition comprisesinformation corresponding to one or more businesses or servicesancillary to the event or device condition.